package exemple15.actionsXML;


import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import exemple15.beans.Administrateur;
import exemple15.beans.Client;
import exemple15.modeles.ModeleAdministrateurDAO;
import exemple15.modeles.ModeleClientDAO2;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author Ambroise Malric
 * @copyright 2012
 * @version 0.1
 */
@SuppressWarnings("serial")
public class AuthentificationXMLAction extends ActionSupport implements ServletRequestAware{
    private String identifiant;
    private String motDePasse;
    private HttpServletRequest request;
	 
	public String getIdentifiant() {
		return identifiant;
	}
	public void setIdentifiant(String identifiant) {
		this.identifiant = identifiant;
	}
	public String getMotDePasse() {
		return motDePasse;
	}
	public void setMotDePasse(String motDePasse) {
		this.motDePasse = motDePasse;
	}
    
	public void setServletRequest(HttpServletRequest request)
	{
	    this.request=request;
	}
	
	public String execute()
	{
		// Variables
		ModeleAdministrateurDAO modeleAdministrateurDAO=null;
		ModeleClientDAO2 modeleClientDAO=null;
		Client client=null;
		Administrateur administrateur=null;
		String erreur=null;

		// Initialisation des modeles
		modeleAdministrateurDAO=new ModeleAdministrateurDAO();
		modeleClientDAO=new ModeleClientDAO2();

		// On cherche tout d'abord si l'identifiant saisie est celui d'un administrateur
		if((administrateur=modeleAdministrateurDAO.getAdministrateur(identifiant))!=null)
		{
			// Si c'est le cas on test le mot de passe
			if(!administrateur.getMotDePasse().equals(motDePasse))
			{
				// Si le mot de passe est incorrect on envoie un message d'erreur
				erreur="Erreur mot de passe administrateur";
				request.setAttribute("erreur", erreur);
				return SUCCESS;
			}
		}
		// Si l'identifiant n'est pas celui d'un administrateur on recherche si celui-ci appartient e un client
		else if((client=modeleClientDAO.getClient(identifiant))!=null)
		{
			// Si c'est le cas on test le mot de passe
			if(!client.getMotDePasse().equals(motDePasse))
			{
				// Si le mot de passe est incorrect on envoie un message d'erreur
				erreur="Erreur mot de passe client";
				request.setAttribute("erreur", erreur);
				return SUCCESS;
			}
		}
		// Si l'identifiant n'appartient ni e un administrateur ni a un client, l'identifiant est incorrect
		else
		{
			erreur="Erreur ce compte n'existe pas";
			request.setAttribute("erreur", erreur);
			return SUCCESS;
		}
		
		
		// Si il n'y a pas d'erreurs on cree en session un objet compte contenant les informations du client ou de l'administrateur 
		if(administrateur!=null)
		{
			//renvoyer les infos
			request.setAttribute("administrateur", administrateur);
			//l'administrateur est correctement connecte	
			return SUCCESS;
		}
		// Pour les clients
		if(client!=null)
		{
			//renvoyer les infos
			request.setAttribute("client", client);
			//le client est correctement connecte
			return SUCCESS;
		}
		
		
		
		return ERROR;
	}
	
	
	
    
}